<?php
set_time_limit(600);
date_default_timezone_set('Asia/Shanghai');
header("Content-type: application/json; charset=utf-8");

require_once('PhpSIP.class.php');

function dtmfINFO($str){
    global $api;
    if (empty($str) || empty($api))
        return;
    $dtmfone = str_split($str);
    foreach ($dtmfone as $one){
        usleep(500000);
        $res = $api->info("Signal=$one \r\nDuration=160 \r\n");
        //  echo $api->getCode()." return code \r\n";
    }
}
function dtmfRFC($str){
	global $api;
	if (empty($str) || empty($api))
		return;
	$dtmfone = str_split($str);
	foreach ($dtmfone as $one){
		$res = $api->sendRTPDTMF($one);
		usleep(20000);
	}
}

try{
  $api = new PhpSIP();
  $api->setDebug(TRUE);//显示信令交互过程及程序内部信息
//   $api->setUsername('8888'); // authentication username 
//   $api->setPassword('741741741'); // authentication password
  $api->setUsername('200012'); // authentication username
  $api->setPassword('8999'); // authentication password
// ////  $api->setProxy('some_ip_here'); 
  $api->addHeader('Event: resync');
  $api->setMethod('INVITE');//准备发出invite请求
  $api->setFrom('"07948111116" <sip:200012@117.21.29.8:280>');//设置sip的from信息，即主叫信息
  $api->setUri('sip:11888@117.21.29.8:280');//设置要拨打的电话，拨出电话都需通过setUri，即被叫信息设置

  $api->send();//开始拨打
//下面检查返回信息，200为正常应答，否则就没打通（invite方法会自动处理401和407的用户认证，listen方法最多检测5次回馈代码（这里检测代码code，也可以检测信令method），这里只要有一次200代码返回就认为成功）
  $api->listen("200","code");
// if ($api->getCode()!="200")
//     die("未正常处理请求，不能继续！ 返回状态码：".$api->getCode());
//  sleep(6);
// //---sip info -------------------
//   dtmfINFO("15872933#");//输入按键串，用INFO带外传输方式发送dtmf信令
//   sleep(11);
//   dtmfINFO("791322141939506458#");
// //---rfc2833 -------------------
// $api->sendRTPDTMF(1);
// sleep(2);
// $api->sendRTPDTMF(1);
// sleep(2);
// $api->sendRTPDTMF(2);
// sleep(2);
// dtmfRFC("15872933#");//输入按键串，用RFC2833协议发送dtmf信息
// sleep(2);
// $api->sendRTPDTMF(1);
// sleep(2);
// $api->sendRTPDTMF(1);
// sleep(2);
// dtmfRFC("791322077857708457#");
$api->info("","BYE");//发送bye信令，挂断电话

} catch (Exception $e) {
    echo $e;
}

?>